package pandora.box.usuarioperfilobjeto;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import persistence.HibernateUtil;

public class UsuarioPerfilObjetoDAOImp implements UsuarioPerfilObjetoDAO {
	private Session session 		= null;
	private Transaction transaction = null;
	
	public void setSessao(Session session){
		this.session = session;
	}
	
	@Override
	public boolean inserirusuarioperfilobjeto(
			UsuarioPerfilObjeto usuarioperfilobjeto) {
		boolean retorno = false;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			System.out.println("Inserir PerfilUsuarioObjeto: "+usuarioperfilobjeto.getIdusuarioperfilobjeto());
			this.session.persist(usuarioperfilobjeto);
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}

	@Override
	public boolean alterarusuarioperfilobjeto(
			UsuarioPerfilObjeto usuarioperfilobjeto) {
		boolean retorno = false;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			System.out.println("Alterar PerfilUsuarioObjeto: "+usuarioperfilobjeto.getIdusuarioperfilobjeto());
			this.session.update(usuarioperfilobjeto);
			this.transaction.commit();
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}

	@Override
	public boolean excluirusuarioperfilobjeto(
			UsuarioPerfilObjeto usuarioperfilobjeto) {
		boolean retorno = false;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.session.delete(this.session.get(UsuarioPerfilObjeto.class, usuarioperfilobjeto.getIdusuarioperfilobjeto()));
			System.out.println("Deletar PerfilUsuarioObjeto: "+usuarioperfilobjeto.getIdusuarioperfilobjeto());
			this.transaction.commit();
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}

	@Override
	public UsuarioPerfilObjeto listarusuarioperfilobjeto(
			UsuarioPerfilObjeto usuarioperfilobjeto) {
		UsuarioPerfilObjeto upo = null;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			upo = (UsuarioPerfilObjeto) this.session.get(UsuarioPerfilObjeto.class, usuarioperfilobjeto.getIdusuarioperfilobjeto());
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			this.session.close();
		}		
		return upo;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<UsuarioPerfilObjeto> listarTUsuarioPerfilObjeto() {
		List<UsuarioPerfilObjeto> list = null;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			list = this.session.createQuery("SELECT * FROM USUARIOPERFILOBJETO;").list();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return list;
	}

}
